Crate vergen[][src]

Generate Build Time Information

vergen, when used in conjunction with cargo build scripts, will generate environment variables to use with the env! macro. Below is a list of the supported variables.

KeySample Value
VERGEN_BUILD_TIMESTAMP2018-08-09T15:15:57.282334589+00:000
VERGEN_BUILD_DATE2018-08-09
VERGEN_SHA75b390dc6c05a6a4aa2791cc7b3934591803bc22
VERGEN_SHA_SHORT75b390d
VERGEN_COMMIT_DATE2018-08-08
VERGEN_TARGET_TRIPLEx86_64-unknown-linux-gnu
VERGEN_SEMVERv0.1.0
VERGEN_SEMVER_LIGHTWEIGHTv0.1.0
VERGEN_BRANCHmaster
VERGEN_RUSTC_SEMVER1.4.3
VERGEN_RUSTC_CHANNELnightly
VERGEN_HOST_TRIPLEx86_64-unknown-linux-gnu

The variable generation can be toggled on or off at an individual level via ConstantsFlags

Note on SEMVER

VERGEN_SEMVER can be generated via git describe or by env::var("CARGO_PKG_VERSION").

By default, SEMVER uses git describe if possible, and falls back to CARGO_PKG_VERSION.

If you wish to force CARGO_PKG_VERSION, toggle off SEMVER and toggle on SEMVER_FROM_CARGO_PKG.

Re-build On Changed HEAD

vergen can also be configured to re-run build.rs when either .git/HEAD or the file that .git/HEAD points at changes.

This can behavior can be toggled on or of with the REBUILD_ON_HEAD_CHANGE flag.

'cargo:' Key Build Script Output

[package]
#..
build = "build.rs"

[dependencies]
#..

[build-dependencies]
vergen = "3"

Example 'build.rs'

extern crate vergen;

use vergen::{ConstantsFlags, generate_cargo_keys};

fn main() {
    // Setup the flags, toggling off the 'SEMVER_FROM_CARGO_PKG' flag
    let mut flags = ConstantsFlags::all();
    flags.toggle(ConstantsFlags::SEMVER_FROM_CARGO_PKG);

    // Generate the 'cargo:' key output
    generate_cargo_keys(flags).expect("Unable to generate the cargo keys!");
}

Use the constants in your code

fn my_fn() {
    println!("Build Timestamp: {}", env!("VERGEN_BUILD_TIMESTAMP"));
}

DEPRECATED - version.rs File Build Script Output

Generate a version.rs file in OUT_DIR (defined by cargo) with up to 8 build time constants. This file can then be used with the include! macro to pull the constants into your source for use.

See the generate_version_rs documentation if you wish to use this method.

Structs

ConstantsFlags

Constants Flags

Functions

generate_cargo_keys

Generate the cargo: key output

generate_version_rsDeprecated

Create a version.rs file in OUT_DIR and write the toggled on constants to the file.